桌面模拟器(TTS)脚本API 您所在的位置:网站首页 桌游模拟器 重置 桌面模拟器(TTS)脚本API

桌面模拟器(TTS)脚本API

2024-06-18 07:38| 来源: 网络整理| 查看: 265

摘要

在本节中,您将找到所有特定于《桌面模拟器》的Lua脚本的事件/类/函数的详细信息。关于Lua脚本语言如何工作以及它自己能做什么,您可以查看Lua官方文档。

使用API文档 左栏

这是在《桌面模拟器》中用Lua编写脚本时所需的类和其他信息的顶级列表。事件(Event), 根基(Base)和对象(Object)是你使用最多的三个页面,其余的都是你可以访问的小众信息。熟悉这三页的内容有助于从高层次上理解脚本编写能够做什么。

右栏

目录将展示你所在页面的内容。它总是首先从高级摘要信息开始,如果需要,则从底部开始详细信息。!符号后的总结元素将直接将您带到下面的相关详细解释。

完善文档

这个文档主要是用Markdown编写的,可以在Github上找到。

如果你遇到了一个错误,而这是你自己能够修复的,那么欢迎拉取请求。但是,如果您已经发现了一个问题,但不知道如何解决它,请通过打开一个问题让我们知道。

TTS术语 对象 Object

当前存在于场景中的游戏物理对象。如果一个对象被放置在包/牌组/等中,它将不再存在,直到它被拉出。

玩家 Player

一个人在游戏。每个玩家被分配一个颜色,观众是“灰色”。如果你想要识别一个玩家,你可以使用他们所处位置的颜色。

全局脚本 Global Scripts

每个游戏/保存都有一个全局脚本,它不附加到任何特定的对象。

只有一个全局脚本,并且它总是存在的。

对象脚本 Object Scripts

每个游戏中的对象也可能有一个脚本附加到它。

默认情况下,新创建的对象没有附加脚本。但是,你可以从对象(Object)的上下文菜单中选择create/edit 该对象的脚本(通常通过右键单击对象打开)。

GUID

在《桌面模拟器》中,GUID是一个唯一的6个字符的字符串,可以用来识别游戏中的对象。当场景中存在对象时,该对象会自动分配到一个GUID。

如果一个对象被复制,在引擎给新的对象分配一个新的GUID之前,它有时会有1帧相同的GUID。容器中的对象(包/牌组/等)不会通过这种方式自动获得新的GUID。只有当他们的东西被移到现场时才会。

弃用的API

在本文档中,您可能会遇到Lua API,它们被标记为 deprecated 。建议您不要再使用已弃用的API。通常,这是因为引入了更新或改进的API,它们可以更好地服务于相同的目的。

弃用的API不会被移除或停止工作。

现有的Mod可以继续使用被弃用的功能。无论如何,强烈建议为了获得最佳体验,在新代码中避免使用已弃用的API。

数据类型

类型(Types)是指所使用的信息的类型。您不需要在Lua中声明类型,但是在这个API中您将看到它们的指示。这只是为了让您知道在给定的变量/参数中需要什么样的信息。这个API利用以下类型。

通用标准 标签TypeDescriptionExamplenilnil空值nilintint整性数5floatfloat浮点数2.032boolbool布尔值truestringstring字符串"Hello."tabletable表,一种键值对集合{["key"]="value", true, 5}vectorvector矢量,向量colorcolor颜色functionfunction函数objectobject对象Global or selfplayerplayer游戏中的玩家Player["White"]variablevariable其他类型的组合。

更多信息见下文。

 有关类型的更多信息,可以阅读下面的内容或参考相关的Lua文档。

 特殊标准

有些类型需要以特定的方式使用。对于Vector和Color,它们是在《桌游模拟器》中经常使用的表格Table。它们表示颜色和矢量,它们的内容必须以某种方式进行格式化才能正确使用。

对于函数,当运行中的脚本有特定的要求时需要延迟时,就会使用函数。

颜色 Color

Color是Table的一种类型,用于定义着色的RGB值。

您可以使用Color类来操作颜色。

表中包含r,g,b,a和/或1,2,3,4 。字母键和数字键相互重复,每个键代表一种颜色或透明度。

颜色 Color字母键数字键红色 redr1绿色 greeng2蓝色 blueb3透明度 alphaa4

例如,一个带有白色色调的Object会返回这个表:

{ r=1, g=1, b=1, 1=1, 2=1, 3=1, }

注意,它不包含a或4键。这是因为目前只有脚本按钮和脚本输入使用alpha通道(透明度)。

混合键

只需要一种类型的键,数字或字母。如果两种都出现在Table中,则忽略数字键,只使用字母键。

--红色 {r=1, g=0, b=0} --蓝色 {0, 0, 1} --这个表表示红色 {r=1, g=0, b=0, 0, 0, 1}

每个键的值在0到1之间。如果您使用的是0-255的RGB颜色,您可以使用简单的数学转换为适当的值。

--显示一种颜色 r=50, b=83, g=199 self.setColorTint({50/255, 83/255, 199/255})

字符串

你也可以用一个字符串来代替颜色表。使用玩家颜色将自动填充该值。它适用于12种颜色名称中的任何一种,因为它们写在玩家颜色页面上。

例如:

printToAll("Test", "Green") 向量 Vector

Vector是一种带有x、y和z坐标的对象类型,用于定义位置、旋转或方向。

您可以使用Vector类来操作向量。

例如:

target = Vector(1, 0, 0) + Vector(0, 2, 0):normalized()

表将包含键x, y, z和/或1,2,3。字母键和数字键相同。

字母键数字键x1y2z3

例如,在坐标X=5, Y=2, Z=-1处的一个对象将返回这个向量:

{ x=5, y=2, z=-1, }

混合键

在引入Vector之前,坐标表包含1、2、3和x、y、z键下的单独值,字母键不同时优先。现在情况不再是这样了,使用字母和数字键是等价的。然而,当迭代Vector组件时,您必须使用pairs,并且只读取字母键。

值范围

值的范围取决于您使用的Vector类型。

类型描述范围Position空间中的点世界范围内的任何数字。Rotation角,单位度 °-180 to 180.Direction向量的方向。-1 to 1.

类型细节

Position

X是右/左,Y是上/下,Z是前/后。位置向量可以是世界向量,也可以是局部向量。TTS中大多数的函数使用世界位置向量。

类型描述世界 World实例的中心是{x=0, y=0, z=0}。那通常是靠近桌面的中心。局部 Local对象模型的中心是{x=0, y=0, z=0}。对象的中心是由模型的创建者决定的。

世界与局部坐标的转换

 positionToWorld(...) 和 positionToLocal(...) 被用来转换两种坐标

Rotation

X是俯仰(点头),Y是偏航(摇头),Z是滚转(头部倾斜)。

Direction

X是右/左,Y是上/下,Z是前/后。

函数 Function

函数(Function)是一段可以在触发时运行的代码。在Lua中,您可以传递(作为参数使用)函数。TTS中的一些元素可以通过传递函数来执行某些操作,比如在延迟后触发它。

用法

要传递一个函数,首先必须创建这个函数。有多种方法可以做到这一点:

--动态创建它 function() print("Like This") end --用变量名创建它 anyFuncName = function() print("Like This") end --用变量名创建它,该变量名还可以传递参数 function anyFuncName(printString) print(printString) end

你需要传递一个函数,而不是一个函数的结果。所以这是行不通的:

Wait.frames(print("Ding"), 80) 相反,让打印函数运行的结果: Wait.frames(function() print("Ding") end, 80)

示例

 例如,这里的Wait.frames(…)被使用了3次。它等待一组帧,然后激活一个给定的函数:

function onLoad() --带有参数的内置函数可以直接调用 --这是通过将函数封装在' function() '和' end '中来实现的。 Wait.frames(function() print("One") end, 60) --你还可以调用你自己创建的自定义函数 --向它们传递你希望的任何参数 Wait.frames(function() sayTwo("Two") end, 120) --如果你没有传递任何参数给函数,你可以缩短它 Wait.frames(sayThree, 180) end --它的参数传递给它了吗 function sayTwo(s) print(s) end --没有任何参数传递给它 function sayThree() print("Three") end 事件

游戏通常需要执行代码以响应游戏中发生的某些行动、互动或变化,统称为事件。

事件处理程序

事件处理程序是您定义并由TTS调用的函数。

可以定义许多事件处理程序。每一个都为您提供了处理特定事件发生的机会。

当TTS调用你的函数,它将提供事件特定的细节作为你的事件处理函数的参数。

为了让TTS发现事件处理程序,必须将其定义为具有特定名称的全局变量。您使用的名称取决于您希望处理的事件。下面将介绍特定于事件的细节。

而事件处理程序名称只对应于一种类型的事件。每个事件可能有多个对应的事件处理程序(即事件处理程序名称),TTS将查找和执行。

 事件处理程序有三种类型:

通用事件处理程序全局事件处理程序对象事件处理程序  通用事件处理程序

通用事件处理程序可以在全局脚本和/或对象脚本中定义。

全局事件处理程序

全局事件处理程序只能在全局脚本中定义。

如果在对象脚本中使用全局事件处理程序的名称定义函数。它不会被调用。

对象事件处理程序

对象事件处理程序只能在对象脚本中定义。

如果您在全局脚本中使用对象事件处理程序的名称定义函数。它不会被调用。

事件处理程序执行

通常,如果一个事件有多个事件处理程序,例如在对象脚本、全局脚本和/或多个对象脚本中,那么所有这些事件处理程序都将被执行。

一些事件处理程序允许您返回一个值来触发可选的副作用。例如,从"try"事件处理程序返回false将阻止正在尝试的任何操作。如果返回触发可选副作用的值,则将不会执行后续事件处理程序(针对同一事件发生)。

事件汇总 通用事件处理程序

如上所述,您可以在全局脚本或对象脚本中声明这些函数。

函数名称描述onBlindfold(player player,  bool blindfolded)当玩家带上或摘下他们的眼罩时调用。onChat(string message,  player sender)当用户发送游戏内聊天消息时调用。onExternalMessage(table data)当通过外部编辑器API从外部进程接收到自定义消息时调用。onFixedUpdate()每一次物理周期调用(每秒90次)。这是一个与帧无关的onUpdate()函数。onLoad(string script_state)当保存已经完全完成加载时调用。onObjectCollisionEnter(object registered_object, table collision_info)当一个对象开始与注册碰撞事件的对象发生碰撞时调用。onObjectCollisionExit(object registered_object, table collision_info)当一个对象与注册碰撞事件的对象停止碰撞时调用。onObjectCollisionStay(object registered_object, table collision_info)一个对象与注册碰撞事件的对象碰撞的每一帧都会调用。onObjectDestroy(object object)当一个对象即将被销毁时调用。onObjectDrop(string player_color, object object)当一个对象被玩家丢弃时调用。onObjectEnterContainer(object container, object object)

对象进入容器时调用。包括牌组

onObjectEnterScriptingZone(object zone, object object)

deprecated 请使用onObjectEnterZone(…)。

当对象进入脚本区域时调用。

onObjectEnterZone(object zone, object object)当对象进入一个区域时调用。onObjectFlick(object object, string player_color, vector impulse)当玩家轻弹一个对象时调用。onObjectHover(string player_color, object object)当对象被玩家的指针(光标)悬停时调用。onObjectLeaveContainer(object container, object object)当对象离开容器时调用。onObjectLeaveScriptingZone(object zone, object object)

deprecated 请使用onObjectLeaveZone(…)。

当对象离开脚本区时调用。

onObjectLeaveZone(object zone, object object)当对象离开某个区域时调用。onObjectLoopingEffect(object object, int index)每当激活AssetBundle的循环效果时调用。onObjectNumberTyped(object object, string player_color, int number)当玩家在一个物体上悬停时键入一个数字时调用。onObjectPageChange(object object)当自定义PDF对象更改页面时调用。onObjectPeek(object object, string player_color)当玩家窥视一个对象时调用。onObjectPickUp(string player_color, object object)当一个玩家拿起一个对象时调用。onObjectRandomize(object object, string player_color)当对象被随机化时调用。就像洗牌或摇骰子。onObjectRotate(object object, float spin, float flip, string player_color, float old_spin, float old_flip)当玩家旋转一个对象时调用。onObjectSearchEnd(object object, string player_color)在容器上完成搜索时调用。onObjectSearchStart(object object, string player_color)在容器上开始搜索时调用。onObjectSpawn(object object)当派生/创建对象时调用。onObjectStateChange(object object, string old_state_guid)对象改变状态后调用。onObjectTriggerEffect(object object,int  index)当AssetBundle的触发效果被激活时调用。onPlayerAction(player player, Action action, table targets)当玩家试图执行一个动作时调用。onPlayerChangeColor(string player_color)当玩家改变颜色或第一次选择时调用。如果他们断开连接,它就返回“Grey”。onPlayerChangeTeam(string player_color, string team)当玩家更换队伍时调用onPlayerConnect(player player)当玩家连接到游戏时调用。onPlayerDisconnect(player player)当玩家从游戏断开连接时调用。onPlayerPing(player player, vector position)当玩家ping一个位置时调用。onPlayerTurn(player player, player previous_player)在玩家回合开始时调用。onSave()当脚本需要保存其状态时调用。onScriptingButtonDown(int index, string player_color)

当按下脚本按钮(默认为整个小键盘的任意键)时调用。返回的索引范围为1 ~ 10。

onScriptingButtonUp(int index, string player_color)当一个脚本按钮(默认为整个小键盘的任意键)被释放时调用。返回的索引范围为1 ~ 10。onUpdate()每一帧。

全局事件处理程序 

如上所述,您可以在Global脚本中声明这些函数。

函数名描述filterObjectEnterContainer(object container, object object)

deprecated 请使用tryObjectEnterContainer(…)。

当对象试图进入容器时调用。

onZoneGroupSort(object zone, table group, bool reversed)当需要对一组由布局区域进行布局的对象进行排序时调用。tryObjectEnterContainer(object container, object object)当对象试图进入容器时调用。tryObjectRandomize(object object, string player_color)当玩家尝试随机化一个对象时调用。tryObjectRotate(object object, float spin, float flip, string player_color, float old_spin, float old_flip)当玩家试图旋转一个物体时调用。

对象事件处理程序

如上所述,你可以在对象脚本中声明这些函数。

这些事件属于脚本所有者-对象(在脚本中可用self访问)。

它们不能在全局脚本中声明这些事件处理程序。

函数名描述filterObjectEnter(object object)

deprecated 请使用tryObjectEnter(…)。

当对象试图输入脚本所有者object(容器)时调用。

onCollisionEnter(table collision_info)当一个对象开始与脚本所有者对象发生碰撞时调用。onCollisionExit(table collision_info)当一个对象停止与脚本所有者对象发生碰撞时调用。onCollisionStay(table collision_info)一个对象与脚本所有者对象发生碰撞的每帧调用。onDestroy()当玩家删除脚本所有者对象时调用。onDrop(string player_color)当玩家使脚本所有者对象掉下时调用。onFlick(string player_color, vector impulse)当玩家轻弹脚本所有者对象时调用。onGroupSort(table group, bool reversed)当需要对一组由脚本所有者布局区域布局的对象进行排序时调用。onHover(string player_color)当玩家将指针(光标)移到脚本所有者对象上时调用。onNumberTyped(string player_color, int number)当玩家将鼠标悬停在脚本所有者对象上时输入数字时调用。onPageChange()当脚本所有者自定义PDF的页面被更改时调用。onPeek(string player_color)当玩家窥视脚本所有者对象时调用。onPickUp(string player_color)当玩家拿起脚本所有者对象时调用。onRandomize(string player_color)当脚本所有者对象被随机化时调用。就像洗牌或摇骰子。onRotate(float spin, float flip, string player_color, float old_spin, float old_flip)当玩家旋转脚本所有者对象时调用。onSearchEnd(string player_color)当玩家搜索完脚本所有者对象时调用。onSearchStart(string player_color)当玩家开始搜索脚本所有者对象时调用。onStateChange(string old_state_guid)当因对象状态更改而生成脚本所有者对象时调用。tryObjectEnter(object object)当另一个对象试图进入脚本所有者对象(容器)时调用。tryRandomize(string player_color)当玩家试图随机化脚本所有者对象时调用。tryRotate(float spin, float flip, string player_color, float old_spin, float old_flip)当玩家试图旋转脚本所有者对象时调用。 细节略

基础

这些是一个松散的函数集合,可用于在TTS中执行各种操作。

这些功能可以利用游戏内的对象,但它们都不能在游戏内的对象上执行。它们都与游戏空间有关。

函数汇总 全局函数

在任何脚本中工作的通用函数。

函数名描述返回类型addContextMenuItem(string label, func toRunFunc, bool keep_open, bool require_table)将菜单项添加到全局右键单击上下文菜单中。全局菜单显示时,玩家右键单击空白空间或表。boolclearContextMenu()清除所有功能addContextMenuItem(…)添加的菜单项。boolcopy(table object_list)复制对象列表到剪贴板。适用于paste(…)一起用。booldestroyObject(object obj)销毁一个对象。boolflipTable()掀桌子。boolgetAllObjects()

deprecated 请使用getobject()。

返回包含游戏中除手牌区以外的所有物体的表格。

tablegetObjectFromGUID(string guid)返回对象的GUID。如果这个GUID当前不存在,将返回nil。objectgetObjects()返回包含游戏中所有对象的表格。tablegetObjectsWithTag(string tag)返回包含带有指定标签的所有对象的表。tablegetObjectsWithAnyTags(table tags)返回包含至少一个指定标签的所有对象的表。tablegetObjectsWithAllTags(table tags)返回包含所有指定标签的所有对象的表。tablegetSeatedPlayers()返回包含所有座位上的玩家的颜色字符串表。tablegroup(table objects)将对象组合在一起,就像G键对玩家的作用一样。tablepaste(table parameters)粘贴游戏中复制到剪贴板的对象。与copy(…)一起用。tablesetLookingForPlayers(bool lfp)启用/禁用查找组。这在服务器浏览器中是可见的,表明你是否在为游戏征募玩家。boolspawnObject(table parameters)生成一个对象。objectspawnObjectData(table parameters)从数据表生成一个对象。objectspawnObjectJSON(table parameters)从JSON字符串生成一个对象。objectstartLuaCoroutine(object function_owner,string  function_name)启动一个协同程序。boolstringColorToRGB(string player_color)将玩家颜色字符串转换为颜色表进行着色。color 热键函数

函数名描述返回类型addHotkey(string label, func toRunFunc, bool trigger_on_key_up)在游戏中添加一个可绑定的热键。boolclearHotkeys()清除所有以前通过addHotkey(…)添加的热键。boolshowHotkeyConfig()显示热键配置窗口下的选项->游戏键。bool 消息函数

处理发送和显示数据的函数。

函数名描述返回类型broadcastToAll(string message, color message_tint)打印屏幕上的信息给所有玩家,以及他们的游戏内聊天。boolbroadcastToColor(string message, string player_color,  message_tint)打印屏幕上的信息给指定的玩家,以及他们在游戏中的聊天。boollog(var value, string label, string tags)将消息记录到主机的系统控制台。(快捷键:~)boollogString(var value, string label, string tags, bool concise, bool displayTag)返回一个类似于log(…)输出的格式化字符串。stringlogStyle(string tag, color tint, string prefix, string postfix)为日志的指定标记类型设置样式选项。boolprint(string message)打印一个只有房主才能看到的聊天字符串。用于调试脚本。nilprintToAll(string message, color message_tint)打印信息到所有连接的玩家的聊天。boolprintToColor(string message, string player_color, color message_tint)打印信息到特定颜色的玩家。boolsendExternalMessage(table data)

向外部脚本编辑器(最可能是Atom)发送一个表。这是为自定义编辑器功能。

bool 细节 

对象

对象类表示桌面模拟器中的任何实体。一旦你在你的脚本中有了一个对象的引用,你就可以直接在它上面调用函数。例如:obj.getPosition(…)。你可以通过多种方式获取一个对象的引用;

如果你的脚本在一个对象上并引用那个对象,使用self属性。使用getObjectFromGUID(…)对象的GUID(通过鼠标右键点击它找到)。获取它作为另一个函数的返回值,就像使用spawnObject(…)。 成员变量  公共变量

这些变量对所有对象都是通用的。有些变量是只读的,这意味着您可以查询属性,但不能为其赋新值。

通过将true赋值给locked来锁定/冻结对象。

object.locked = true

 打印对象是否是locked。

if object.locked then print("Object is locked") else print("Object is not locked") end 变量描述类型Typealt_view_angle当非零时,Alt视图将使用指定的欧拉角度来查看对象。vectorangular_drag角阻力。 Unity刚体(Rigidbody)特性。floatauto_raise在玩家手持该物体时,该物体应放在其他物体上方以避免碰撞。boolbounciness弹力,值为0~1。 Unity物理材质。floatdrag阻力。 Unity刚体(Rigidbody)特性。floatdrag_selectable

当为false时,对象将不会被绘制在对象周围的常规(单击和拖动)选择框选中。

玩家可以在拖动选择的同时按住“Shift”修改器来覆盖这一行为。

booldynamic_friction动摩擦力, 值为 0~。Unity物理材质。floatgrid_projection如果已打开可见网格,则网格线可以显示在对象上。boolguid桌面模拟器中的6个字符唯一的对象标识符。一旦生成成员变量变为false,它就被正确地赋值stringheld_by_color持有该物体的玩家的颜色。stringheld_flip_index值为0~23。当玩家点击翻转或alt +旋转时改变。intheld_position_offset距离指针的位置偏移量。vectorheld_reduce_force当物体在移动时与物体碰撞时,这将自动启用并减少移动力。boolheld_rotation_offset从指针旋转偏移量。vectorheld_spin_index值为0~23。当玩家旋转物体时改变。inthide_when_face_down隐藏面朝下的对象,就像它在手区域一样。面是对象的“顶部”,它的正Y坐标的方向。卡牌/牌组默认为true。boolignore_fog_of_war使对象不被战争迷雾隐藏。boolinteractable如果对象可以与玩家互动。其他对象仍然能够与它交互。boolis_face_down如果对象大致面朝下(就像纸牌)。面是对象的“顶部”,它的正Y坐标的方向。只读。boolloading_custom如果对象的自定义元素(图像/模型/等)正在加载。只读。boollocked对象被冻结在原地(防止物理交互)。boolmass质量。 Unity刚体(Rigidbody)特性。floatmax_typed_number

确定用户悬停在对象上时可输入的最大数字数。

一旦玩家输入了最大数字数,相应的行为(如onObjectNumberTyped/onNumberTyped)就会立即触发,提高响应性。

intmeasure_movement

当移动物体时,测量工具将自动被使用。

boolmemo一个字符串,您可以在其中保存与对象关联的用户数据。桌面模拟器保存此字段,但不使用它。存储任何你认为合适的信息。stringname此对象的内部资源名称。只读,并且只对spawnObjectData()有用。通常,您需要getName()。stringpick_up_position物体被拾取的坐标位置。只读。vectorpick_up_rotation

物体被拾取的旋转位置。只读。

vectorremainder

如果这个对象是一个容器,它不能存在少于两个包含对象(例如,一个牌组),取出最后一个包含对象将导致容器被销毁。在它的位置上,容器中最后一个剩余的对象将被生成。

这个变量在派生时提供对剩余对象的引用。否则,它是零。只读。

objectresting对象处于静止状态。 Unity刚体(Rigidbody)特性。boolscript_code对象上的Lua脚本。stringscript_state对象上保存的数据。见onSave()。stringspawning

对象完成生成。只读。

boolstatic_friction静摩擦力,值为0~1. Unity物理材质。floatsticky如果这个对象被选中,那么这个对象上的其他对象也被选中。booltag

已弃用。请使用 type。

这个对象的类型。只读。stringtooltip当指针悬停在对象上时,工具提示打开。工具提示显示名称和描述。booltype这个对象的类型。只读的。stringuse_gravity重力是否影响这个物体。booluse_grid是否启用捕捉到网格。booluse_hands这个物体是否可以被握在手的区域。booluse_rotation_value_flip

物体翻转时是否切换旋转的轴。

booluse_snap_points使用或忽略接合点。boolvalue

与该对象相关联的数值,当鼠标悬停在该对象上时,将显示该数值。

在堆栈的情况下,UI中显示的值将乘以堆栈大小,也就是说,你可以使用值来创建自定义堆叠芯片。

当选择多个对象时,值将与共享重叠对象标记的对象一起求和。

intvalue_flags

已弃用。请使用 object tags

一个位域。当具有重叠value_flags的对象被选中并悬停在其上时,它们的值将被求和。int 行为变量

一些对象提供额外的行为。该功能可以作为Object成员变量访问,但将为nil,除非Object包含该行为。

“Counter”对象有一个Counter成员变量。我们将使用它来递增和检索计数器的值。

object.Counter.increment() print("The counter value is now " .. object.Counter.getValue())

变量类型有效对象AssetBundleAssetBundle自定义“AssetBundle”对象。BookBook"Custom PDF" 对象。BrowserBrowser"Tablet" 对象。ClockClock"Digital Clock" 对象。CounterCounter"Counter" 对象。LayoutZoneLayoutZone布局区域。RPGFigurineRPGFigurine"RPG Kit" 动画雕像对象,即类型"rpgFigurine".TextToolTextTool3D Text 对象,例如使用游戏内文本工具创建的文本。 函数汇总 变换函数

这些函数处理对象的物理属性:位置、旋转、缩放、边界、速度。换句话说,移动物体以及获取物体如何移动的信息。

函数名描述返回类型addForce(vector vector, int force_type)在方向向量中向对象添加力。booladdTorque(vector vector, int force_type)在旋转向量中为物体增加扭矩。boolgetAngularVelocity()返回当前角速度的向量。vectorgetBounds()返回一个以全局术语描述对象大小的Vector。vectorgetBoundsNormalized()返回一个以全局术语描述对象大小的Vector,就像它被旋转到{0,0,0}一样。vectorgetPosition()返回当前世界位置的Vector。vectorgetPositionSmooth()如果对象是平滑移动的,返回当前平滑移动目标的向量,否则返回nil。vectorgetRotation()返回当前旋转的向量。vectorgetRotationSmooth()如果对象是平滑移动的,返回当前平滑旋转目标的向量,否则返回nil。vectorgetScale()返回当前比例尺的向量。vectorgetTransformForward()返回该对象的正向向量。vectorgetTransformRight()返回该对象的向右向量。vectorgetTransformUp()返回该对象的向上向量。vectorgetVelocity()返回当前速度的向量。vectorisSmoothMoving()指示一个物体是否作为平滑移动的一部分移动。平滑移动由setPositionSmooth和setRotationSmooth执行。boolpositionToLocal(vector vector)在将世界向量(世界位置)转换为局部向量(局部位置)后返回一个向量。vectorpositionToWorld(vector vector)在将局部向量(局部位置)转换为世界向量(世界位置)后返回一个向量。vectorrotate(vector vector)在给定向量的方向上平滑地旋转对象。boolscale(vector vector or float)将对象缩放倍数。boolsetAngularVelocity(vector vector)设置一个向量为当前的角速度。boolsetPosition(vector vector)立即移动一个对象到给定的世界位置。boolsetPositionSmooth(vector vector, bool collide, bool fast)将对象平滑移动到给定的世界位置。boolsetRotation(vector vector)立即旋转一个对象到给定的向量。boolsetRotationSmooth(vector vector, bool collide, bool fast)将对象平滑地旋转到给定的向量。boolsetScale(vector vector)设置一个向量为当前比例。boolsetVelocity(vector vector)设置一个向量作为当前的速度。booltranslate(vector vector)通过给定的向量偏移量平滑移动对象。 标签函数

这些函数处理与对象相关联的标记。单个标签是一组字符串,不区分大小写。

函数名描述返回类型addTag(string tag)将指定的标记添加到对象。boolgetTags()返回已添加到对象的标签(string)表。tablehasAnyTag()返回对象是否有标签。boolhasMatchingTag(table other)返回该对象和指定的其他对象是否共享至少一个共同标签。boolhasTag(string tag)返回对象是否具有指定的标签。boolremoveTag(string tag)从对象中移除指定的标签。boolsetTags(table tags)将对象上的所有标签替换为指定表(包含string)中包含的标签。

如果你想创建自己的系统,其中对象标签控制交互,规范的逻辑是,如果系统没有标签,它与所有东西交互,但如果它有任何标签,那么它只与共享其中一个的对象交互。例如(假设系统是由游戏内的对象所代表): 

allow_interaction = not system.hasAnyTag() or system.hasMatchingTag(object) UI函数

一个新的UI系统被添加到桌面模拟器,它允许在对象上创建更灵活的UI元素。旧系统(经典UI)和新系统(自定义UI)都可以工作,而且各自有自己的优势。

经典UI

这些函数允许创建/编辑/删除功能按钮和文本输入,这些按钮和文本输入本身会触发脚本中的代码。这些按钮/输入附加到创建它们的对象上。

Function NameDescriptionReturnclearButtons()删除所有脚本按钮。boolclearInputs()删除所有脚本输入。boolcreateButton(table parameters)创建附加到对象的脚本按钮。boolcreateInput(table parameters)创建附加到对象的脚本输入。booleditButton(table parameters)修改一个已存在的按钮。booleditInput(table parameters)修改现有输入。boolgetButtons()返回包含该对象上所有按钮的表。tablegetInputs()返回一个表,包含该对象上的所有输入。tableremoveButton(int index)删除指定的按钮。boolremoveInput(int index)删除指定的输入。bool

自定义UI

自定义UI为您提供了广泛的元素类型,而不仅仅是按钮和输入,以放置到对象上。它是UI类的扩展,关于其使用的详细信息可以在UI页面中找到。

获取函数

这些函数从对象中获取信息。

函数名描述返回类型getAttachments()返回与容器的getObjects()相同格式的表。tablegetColorTint()

颜色的色调。

colorgetCustomObject()返回一个包含自定义对象的自定义对象信息的表。tablegetData()返回对象的表数据结构表示形式。适用于spawnObjectData(…)。tablegetDescription()描述,也显示为对象的工具提示的一部分。stringgetFogOfWarReveal()影响战争迷雾被揭示的设置tablegetGMNotes()游戏主持笔记只对黑色玩家可见。stringgetGUID()对象唯一标识符的字符串。stringgetJSON( indented)

返回对象的JSON字符串表示形式。适用于spawnObjectJSON(…)。

缩进是可选的,默认值为true。

stringgetJoints()

返回附加到此对象的任何关节的信息。

tablegetLock()对象是否上锁boolgetName()名称,也显示为对象的工具提示的一部分。stringgetObjects()返回描述区域/袋子/牌组中包含的对象的数据。vargetQuantity()返回包含的对象的数量(如果对象是包,牌组或堆),否则为-1。intgetRotationValue()返回当前的rotationValue。旋转值用于给不同的旋转赋值(如骰子)。vargetRotationValues()返回一个包含旋转值的表。旋转值用于给不同的旋转赋值(如骰子)。tablegetSelectingPlayers()返回当前选择对象的玩家颜色表。tablegetStateId()对象的当前状态ID(索引)。如果没有其他状态,则返回-1。状态id(索引)从1开始。intgetStates()

返回一个关于对象状态的信息表。

tablegetValue()返回对象的值。根据对象的类型,这表示一些不同的东西。vargetZones()返回对象当前占用的区域列表。tableisDestroyed()如果对象被销毁(或将被销毁),则返回true。bool 设置函数

这些函数将操作应用于对象。主要是修改对象的一些属性。

函数名描述返回类型setColorTint(color color)设置颜色色调。boolsetCustomObject(table parameters)设置自定义对象的属性。boolsetDescription(string description)设置对象的描述。显示在工具提示后延迟。boolsetFogOfWarReveal(table fog_settings)建立设置并启用/禁用一个对象的战争迷雾的显示。.boolsetGMNotes(string notes)设置游戏主笔记只对玩家颜色黑色可见。boolsetLock(bool lock)设置对象是否被锁定。boolsetName(string name)设置对象的名称。显示在工具提示。boolsetRotationValue(var rotation_value)设置对象的旋转值,即物理旋转对象。setRotationValues(table rotation_values)设置对象的旋转值。旋转值用于给不同的旋转赋值(如骰子)。boolsetState(int state_id)设置对象的状态。状态id(索引)从1开始。obejctsetValue(var value)

设置对象的值。根据对象的类型,表示一些不同的东西。

bool 动作函数

这些函数对对象执行一般操作。

函数名描述返回类型addAttachment(object object)

作为参数提供的对象被销毁并成为一个虚拟的对象子对象。

booladdContextMenuItem(string label, bool toRunFunc, bool keep_open)向对象右键单击上下文菜单添加菜单项。booladdToPlayerSelection(string player_color)添加对象到玩家的选择。boolclearContextMenu()清除所有被addContextMenuItem(…)添加的菜单项。boolclone(table parameters)复制/粘贴这个对象,返回一个对新对象的引用。objectcut(int count)在给定的牌数下切(分)一副牌。tabledeal(int number, string player_color, int index)将从牌组/袋/堆/个人物品中取对象。booldealToColorWithOffset(vector offset, bool flip, string player_color)从一副牌到一个相对于手区位置取对象。objectdestroyAttachment(int index)销毁具有给定索引的附件。booldestroyAttachments()销毁所有附件。booldestruct()销毁对象。允许self.destruct()。booldrop()迫使一个物体(如果被玩家持有)被丢弃。boolflip()翻转对象。boolhighlightOff(color color)从对象周围移除一个高亮。boolhighlightOn(color color, float duration)在对象周围创建一个高亮显示。duration是可选的,以秒为单位指定,当省略时,对象保持高亮显示。booljointTo(object object, table parameters)将对象连接在一起,方法与连接工具相同。boolputObject(object put_object)将一个物体放入容器(筹码堆/袋子/牌组)。objectrandomize(string color)洗牌/包,掷骰子/硬币,把其他物体举到空中。与默认按R相同。如果可选参数color被使用,这个函数将触发onObjectRandomized(),传递玩家的颜色。boolregisterCollisions(bool stay)为全局碰撞事件注册此对象。boolreload()返回自身重生后的对象引用。objectremoveAttachment(int index)删除具有给定索引的子节点。使用getAttachments()查找索引属性。objectremoveAttachments()分离此对象的子对象。返回一个对象引用表tableremoveFromPlayerSelection(string player_color)从玩家的选择中移除对象。boolreset()

重置该对象。重置一副牌会把所有的牌都带回来。重置一个包可以清除它的内容(对Loot和Infinite包都适用)。

boolroll()掷硬币/骰子。boolshuffle()洗牌/摇牌袋里的东西。boolshuffleStates()在随机选择并更改为一个状态后,返回一个指向新状态的Object引用。objectsplit(int piles)把一副牌尽可能均匀地分成若干摞。tablespread(float distance)在一副牌上使用摊开动作。tabletakeObject(table parameters)从容器(包/牌组/筹码堆)中取出一个对象,返回对取出对象的引用。objectunregisterCollisions()

为全局碰撞事件注销此对象。

bool 组件函数

组件api是一种高级特性。理解Unity的工作原理是使用它们的必要条件。有关更多信息,请参阅组件简介。

名称返回类型描述getChild(string name)GameObject返回一个匹配指定名称的子游戏对象。getChildren()table返回子游戏对象列表。getComponent(string name)Component从对象的组件列表中返回一个与指定名称匹配的组件getComponentInChildren(string name)Component返回一个与指定名称匹配的组件。通过递归搜索对象的组件及其子组件(深度优先)找到。getComponents(string name)table返回对象的组件列表。name是可选的,当指定时,只有指定名称的组件将被包括。getComponentsInChildren(string name)table返回通过递归搜索对象及其子对象(深度优先)找到的组件列表。name是可选的,当指定时,只有指定名称的组件将被包括。 隐藏函数

 这些函数可以隐藏对象,类似于手区域或隐藏区域的作用。

函数名描述返回类型setHiddenFrom(table players)

对指定的玩家隐藏对象,就像它在手牌区一样。

boolsetInvisibleTo(table players)对指定的玩家隐藏该对象,就像它在一个隐藏区域一样。boolattachHider(string id, bool hidden, table players)setHiddenFrom(…)的更高级版本。boolattachInvisibleHider(string id, bool hidden, table players)setInvisibleTo(…)的更高级版本。bool 全局函数

这些函数可以在对象中使用,也可以在游戏世界中使用全局函数。

self.getSnapPoints()获得附加到该对象的snap points。getsnappoints()获得的snap points没有附加到任何特定对象上,而是附加到游戏世界上。 函数名描述返回类型addDecal(table parameters)在物体或游戏世界中添加贴花。boolcall(string func_name, table func_params)用于在另一个实体上调用Lua函数。vargetDecals()返回附加到该对象或世界的所有贴花的信息。tablegetLuaScript()从实体获取一个字符串形式的Lua脚本。stringgetSnapPoints()返回表示接合点列表的表。tablegetTable(string table_name)另一个对象脚本中一个变量的数据值。只能返回一个表。tablegetVar(string var_name)另一个实体脚本中一个变量的数据值。不能返回表。vargetVectorLines()返回表示此实体上当前向量线的数据表。参见setVectorLines获取表格格式。tablesetDecals(table parameters)设置对象上的贴花。这可以移除其他已经存在的贴花,并可以移除所有的贴花。boolsetLuaScript(string script)输入一个字符串作为实体的Lua脚本。通常只在生成一个新对象后使用。boolsetSnapPoints(table snap_points)将现有的接合点替换为指定的接合点列表。boolsetTable(string func_name, table data)在另一个实体的脚本中创建/更新一个变量。仅用于表格。boolsetVar(string func_name, var data)在另一个实体的脚本中创建/更新一个变量。不能设置桌子。boolsetVectorLines(table parameters)从这个实体的参数列表生成向量线。bool

对象行为 AB包 AssetBundle

AB包的行为出现在自定义AB包创建的对象上。

函数汇总 函数名描述返回类型getLoopingEffectIndex()当前循环效果的指数。索引从0开始。intgetLoopingEffects()返回一个表,其中键“index”和“name”为每个循环效果。tablegetTriggerEffects()返回一个表,每个触发器的键是“index”和“name”。tableplayLoopingEffect(int index)开始播放循环效果。索引从0开始。nilplayTriggerEffect(int index)开始发挥触发效果。索引从0开始。nil 书本 Book

自定义PDF对象上显示书本行为。书本行为允许您操作显示的PDF。

成员变量 变量类型描述page_offsetint自定义PDF UI中显示的页码被偏移这个量。

例如,如果page_offset设置为10,那么UI中的第一个页面将是11,而不是1。负数是可以接受的,如果规则手册包含了PDF文件中的封面、索引等,那么负数是很有用的。

函数汇总 函数名描述返回类型clearHighlight()清除当前的高亮显示。boolgetPage(bool offsetPageNumbering)获取PDF的当前页。intsetHighlight(float x1, float y1, float x2, float y2)设置当前页上的高亮显示框。boolsetPage(int page, bool offsetPageNumbering)设置当前页面。bool 浏览器 Browser

浏览器行为出现在平板电脑对象上。

指示一个平板对象加载桌面模拟器主页。

object.Browser.url = "https://tabletopsimulator.com" 成员变量 变量类型描述urlstring当前想要显示的URL。pixel_widthint浏览器实际呈现到的像素宽度。 时钟 Clock

时钟行为出现在数字时钟对象上。

时钟模式 Current Time: 显示房主的当前时间。Stopwatch: 显示正在进行的计数。Timer: 显示倒计时和一旦完成发出哔哔声。 成员变量 变量类型描述pausedbool如果时钟定时器暂停。 函数汇总 函数名描述返回类型getValue()当前时间在秒表或定时器模式。时钟模式返回0。这个函数的作用与Object的getValue()相同。intpauseStart()在秒表或计时器模式下暂停/恢复时钟。boolsetValue(int seconds)将时钟切换到计时器并设置倒计时时间。这个函数的作用与Object的setValue()相同。boolshowCurrentTime()切换时钟显示当前时间。它将清除任何秒表或计时器。boolstartStopwatch()将时钟切换为秒表,将时间设置为0。它将重置时间,如果已经在秒表模式。bool 计数器 Counter

计数器行为出现在计数器对象上。

函数

函数名描述返回类型clear()重置计数器为0。booldecrement()减少计数器的值1。boolgetValue()返回计数器的当前值。这个函数的行为与Object的getValue()相同。intincrement()增加计数器的值1。boolsetValue()设置计数器的当前值。这个函数的行为与Object的setValue()相同。bool

增加计数器的值。

object.Counter.increment() 布局区域 LayoutZone

布局区域行为出现在布局区域上。

函数 函数名描述返回类型getOptions()

返回布局区域选项。

tablelayout()导致布局区域(重新)布局。boolsetOptions(table options)设置布局区域的选项。如果表中没有包含某个选项,那么该选项的zone值将保持不变。bool

记录布局区域的选项。

log(zone.LayoutZone.getOptions()) 选项

布局区域选项表可能包含以下属性。

名称类型描述allow_swappingbool当将一个对象从一个完整组移动到另一个完整组时,所放置的对象将被移动到原始组。alternate_directionbool添加到组中的对象将向右对齐或向右对齐,这与组中的前一个对象不同。例如,在耍诡计的游戏中,用来使计数更容易。cards_per_deckint设置布局区域组合新添加的牌时所生成的牌的大小。combine_into_decksbool添加到区域的牌是否应该组合成牌组。你可以指定每副牌的牌数。directionint区域中群组扩展的方向。这将决定原点的角。horizontal_group_paddingfloat组之间插入的水平空间的大小。horizontal_spreadfloat组中每个对象与前一个对象水平移动的距离。instant_refillbool启用时,如果某个组被选中或删除,则布局的其余部分将触发填补空白manual_onlybool该区域不会自动布局对象:它必须手动触发。max_objects_per_groupint区域中的每个组不能包含超过此数目的对象。max_objects_per_new_groupint当新对象添加到一个区域时,它们将被聚集到这么多对象的组中。meld_directionint组内对象扩展的方向。meld_reverse_sortbool启用时,组内的排序顺序颠倒meld_sortint组内部是如何分类的。meld_sort_existingbool启用时,所有组在布局时都会排序,而不仅仅是新添加的组。new_object_facingint确定新添加的对象是面朝上还是面朝下。randomizebool对象将被随机放置。split_added_decksbool添加到区域的牌组将被分割成各自的牌。sticky_cardsbool当拿起卡片时,上面的卡片也会被拿起。trigger_for_face_downbool面朝下的物体将被放置在区域内。trigger_for_face_upbool面朝上的物体将被放置在区域。trigger_for_non_cardsbool放置在区域上的非卡片物体将被放置vertical_group_paddingfloat组之间插入的垂直空间大小。vertical_spreadfloat组中每个对象与前一个对象垂直移动的距离。 RPG小雕像 RPGFigurine

RPG小雕像行为出现在带有内置动画的对象上,例如RPG Kit对象。

回调成员

这些是RPG小雕像成员变量,可以为其分配一个函数,该函数将在偶数发生时执行。

成员名描述onAttack(table hitObjects)当RPG小雕像对象执行攻击时执行。onHit(table attacker)当RPG小雕像对象被攻击时执行。 函数 函数名描述返回类型attack()随机播放一个攻击动画boolchangeMode()改变雕像的当前模式。模式所代表的是基于小雕像。booldie()播放死亡动画或使其复活。bool

制作一个RPG雕像攻击。

object.RPGFigurine.attack() 文本工具 TextTool

文本工具的行为出现在3DText对象上,也就是那些用文本工具创建的对象。

函数 函数名描述返回类型getFontColor()返回字体颜色表。colorgetFontSize()返回字体大小的Int值。intgetValue()返回当前文本。行为与对象的getValue()相同。stringsetFontColor(color font_color)设置字体颜色。boolsetFontSize(int font_size)设置字体大小。boolsetValue(string text)设置当前文本。行为与对象的setValue(…)相同。bool 对象组件 介绍

组件api是一种高级特性。理解Unity的工作原理是使用它们的必要条件。

组件是一个函数和变量的集合,它允许你控制对象的行为。

组件是一个Unity概念,它们是构成桌面模拟器对象的构建块。

游戏对象 GameObjects

《桌面模拟器》中的每个对象都是游戏对象。当游戏被创建时,游戏对象被加载和初始化,一些顶级游戏对象将通过桌面模拟器的Lua脚本api作为常规对象暴露出来,每个对象都有自己的脚本上下文。

有些lua暴露的对象是由子游戏对象的层次结构组成的。组件api允许访问并与这些子游戏对象进行交互(否则你将无法控制)。

组件

游戏对象本身是由组件组成的。典型的游戏对象应该包含Collider, Transform, Mesh等。这些组件描述了游戏对象的行为和视觉表现。

除了内置对象,组件api还提供了访问存在于AssetBundle中的游戏对象和组件。这意味着当你创建一个AssetBundle时,你可以附加所有的组件(灯光,声音等),你可以通过这些api来控制它们。

变量

每个组件都有多个变量。你可以修改这些变量来改变组件如何影响它所组成的游戏对象。

组件 成员变量 名称类型描述game_objectGameObject组件构成的游戏对象。namestring组件的名称。 函数 名称描述返回值get(string name)获取组件上给定变量的值。vargetVars()返回一个表,将变量名称(string)映射到它们的类型,该类型也表示为string。tableset(string name, var value)将指定名称的变量设置为提供的值。bool 游戏对象 成员变量 名称类型描述namestringThe name of the Component. 函数 函数名描述返回类型getChild(string name)返回一个匹配指定名称的子游戏对象。GameObjectgetChildren()返回子游戏对象列表。tablegetComponent(string name)从游戏对象的组件列表中返回一个匹配指定名称的组件。ComponentgetComponentInChildren(string name)返回一个与指定名称匹配的组件。通过递归地搜索游戏对象的组件及其子组件(深度优先)找到。ComponentgetComponents(string name)返回游戏对象的组件列表。name是可选的,当指定时,只有指定名称的组件将被包括。tablegetComponentsInChildren(string name)返回通过递归搜索游戏对象及其子对象找到的组件列表(深度优先)。name是可选的,当指定时,只有指定名称的组件将被包括。table 例子

这些例子都是完整的脚本,可以放在一个常规的红块上。

禁用对象的阴影接收。

function onLoad() -- Get the MeshRenderer of the block's GameObject local meshRenderer = self.getComponent("MeshRenderer") -- Disable its ability to have a shadow cast onto it by another Object meshRenderer.set("receiveShadows", false) end

 禁用一个对象的(box)碰撞器。这通常会导致对象穿过表下落。

function onLoad() -- Get the BoxCollider Component of the block's GameObject local boxCollider = self.getComponent("BoxCollider") -- Disable the BoxCollider Component boxCollider.set("enabled", false) end

禁用一个对象的音频。物体将不再发出声音,例如,当从桌上拿起或掉在桌上时。当其他物体与该物体碰撞时,可能会继续发出声音。

function onLoad() -- Get the AudioSource Component of the block's GameObject local blockComp = self.getComponent("AudioSource") -- Mute it blockComp.set("mute", true) end



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有